home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 071-080 / amok73 / ums / demos&utils / source / selectmail.mod < prev   
Text File  |  1993-11-04  |  5KB  |  162 lines

  1. MODULE SelectMail;
  2.  
  3. IMPORT ums, uc:umsConsts, MHArgs, io, u:Utility, sys:SYSTEM, NoGuru;
  4.  
  5. VAR
  6.   login        : LONGINT;
  7.   cfg        : MHArgs.Config;
  8.   name,pwd,sname: ARRAY 256 OF CHAR;
  9.  
  10.   result    : LONGINT;
  11.  
  12. PROCEDURE CheckErr();
  13.   VAR err: INTEGER; txt:ums.STRPTR;
  14.   BEGIN
  15.     err := ums.ErrNum( login );
  16.     IF err # uc.ok THEN
  17.       io.WriteString("UMS-error:");
  18.       io.WriteInt( err, 3);
  19.       io.WriteString(", '");
  20.       txt := ums.ErrTxt( login );
  21.       io.WriteString(txt^);
  22.       io.WriteString("'\n");
  23.       HALT(20);
  24.     END;
  25.   END CheckErr;
  26.  
  27. BEGIN
  28.   cfg := MHArgs.OpenConfig( "NAME/A,PASSWORD/A,SELECT-NAME","Select Mail - © 15.4.1992 by Martin Horneffer\n\
  29. Select messages addressed to a certain user.\n\n\
  30. name, password : your name and password for UMS.\n\
  31.    select-name : select all messages that are addressed to this user.\n\
  32.                  This is done by the 'to'-field as well as by threads.\n\
  33.                  Default is same as 'name'\n", NIL);
  34.  
  35.   IF cfg = NIL THEN  HALT(20)  END;
  36.   IF cfg.GetString( "NAME", name) & cfg.GetString( "PASSWORD", pwd)  THEN
  37.     IF ~cfg.GetString( "SELECT-NAME", sname) THEN  sname := name  END;
  38.  
  39.     login := ums.Login( name, pwd);
  40.     IF login = 0 THEN
  41.       io.WriteString("login failure\n");
  42.     ELSE
  43.  
  44.     (* NOTE: since we just logged in all local flags are cleared.    *)
  45.     (*       Usually you'll have to clear them by hand before using. *)
  46.  
  47.  
  48.     (* set local flag 0 on all new messages *)
  49.  
  50.     io.WriteString("looking for new messages: ");
  51.     result := ums.UMSSelectTags( login,
  52.       u.user + uc.tagSelMask,        LONGSET{uc.ViewAccess,uc.postPoned,uc.Old},
  53.       u.user + uc.tagSelMatch,        LONGSET{uc.ViewAccess},
  54.  
  55.       u.user + uc.tagSelWriteLocal,    1,
  56.       u.user + uc.tagSelSet,        LONGSET{0},
  57.       u.user + uc.tagSelUnset,        LONGSET{},
  58.       u.done);
  59.     io.WriteInt( result, 1);  io.WriteString(" found.\n");
  60.     CheckErr();
  61.  
  62.  
  63.     (* set local flag 1 on all messages with matching TONAME *)
  64.  
  65.     io.WriteString("selecting by name: ");
  66.     result := ums.UMSSelectTags( login,
  67.       u.user + uc.tagToName,        sys.ADR(sname),
  68.  
  69.       u.user + uc.tagSelWriteLocal,    1,
  70.       u.user + uc.tagSelSet,        LONGSET{1},
  71.       u.user + uc.tagSelUnset,        LONGSET{},
  72.       u.user + uc.tagSelQuick,        1,
  73.       u.done);
  74.     io.WriteInt( result, 1);  io.WriteString(" selected.\n");
  75.     CheckErr();
  76.  
  77.     (* set local flag 4 for the new ones amongst them *)
  78.  
  79.     io.WriteString("  new messages amongst these: ");
  80.     result := ums.UMSSelectTags( login,
  81.       u.user + uc.tagSelReadLocal,    1,
  82.       u.user + uc.tagSelMask,        LONGSET{0,1},
  83.       u.user + uc.tagSelMatch,        LONGSET{0,1},
  84.  
  85.       u.user + uc.tagSelWriteLocal,    1,
  86.       u.user + uc.tagSelSet,        LONGSET{4},
  87.       u.user + uc.tagSelUnset,        LONGSET{},
  88.       u.user + uc.tagSelQuick,        1,
  89.       u.done);
  90.     io.WriteInt( result, 1);  io.WriteString(".\n");
  91.     CheckErr();
  92.  
  93.  
  94.     (* set local flag 2 on all messages with matching FROMNAME *)
  95.  
  96.     io.WriteString("looking for messages written by you: ");
  97.     result := ums.UMSSelectTags( login,
  98.       u.user + uc.tagFromName,        sys.ADR(sname),
  99.  
  100.       u.user + uc.tagSelWriteLocal,    1,
  101.       u.user + uc.tagSelSet,        LONGSET{2},
  102.       u.user + uc.tagSelUnset,        LONGSET{},
  103.       u.user + uc.tagSelQuick,        1,
  104.       u.done);
  105.     io.WriteInt( result, 1);  io.WriteString(" found.\n");
  106.     CheckErr();
  107.  
  108.     (* set local flag 3 on all replies to  messages with flag 2 *)
  109.  
  110.     io.WriteString("selecting replies to your msgs: ");
  111.     result := ums.UMSSelectTags( login,
  112.       u.user + uc.tagSelReadLocal,    1,
  113.       u.user + uc.tagSelParent,        1,
  114.       u.user + uc.tagSelMask,        LONGSET{2},
  115.       u.user + uc.tagSelMatch,        LONGSET{2},
  116.  
  117.       u.user + uc.tagSelWriteLocal,    1,
  118.       u.user + uc.tagSelSet,        LONGSET{3},
  119.       u.user + uc.tagSelUnset,        LONGSET{},
  120.       u.user + uc.tagSelQuick,        1,
  121.       u.done);
  122.     io.WriteInt( result, 1);  io.WriteString(" selected.\n");
  123.     CheckErr();
  124.  
  125.     (* set local flag 4 for the new ones amongst them *)
  126.  
  127.     io.WriteString("  new messages amongst these: ");
  128.     result := ums.UMSSelectTags( login,
  129.       u.user + uc.tagSelReadLocal,    1,
  130.       u.user + uc.tagSelMask,        LONGSET{0,3},
  131.       u.user + uc.tagSelMatch,        LONGSET{0,3},
  132.  
  133.       u.user + uc.tagSelWriteLocal,    1,
  134.       u.user + uc.tagSelSet,        LONGSET{4},
  135.       u.user + uc.tagSelUnset,        LONGSET{},
  136.       u.user + uc.tagSelQuick,        1,
  137.       u.done);
  138.     io.WriteInt( result, 1);  io.WriteString(".\n");
  139.     CheckErr();
  140.  
  141.  
  142.     (* set user-flag 7 on all messages with local flag 4 set *)
  143.  
  144.     io.WriteString("totally selected: ");
  145.     result := ums.UMSSelectTags( login,
  146.       u.user + uc.tagSelReadLocal,    1,
  147.       u.user + uc.tagSelMask,        LONGSET{4},
  148.       u.user + uc.tagSelMatch,        LONGSET{4},
  149.  
  150.       u.user + uc.tagSelSet,        LONGSET{uc.selected},
  151.       u.user + uc.tagSelUnset,        LONGSET{},
  152.       u.done);
  153.     io.WriteInt( result, 1);  io.WriteString(".\n");
  154.     CheckErr();
  155.  
  156.     END;
  157.   END;
  158.  
  159. CLOSE
  160.   IF login # 0 THEN  ums.Logout(login)  END;
  161. END SelectMail.
  162.